/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.latesis.bean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;

/**
 *
 * @author Alan -  Desarrollo
 */
@Entity
@Table(name = "TBL_SERVICIO")
public class ServicioBean implements Serializable {
    
    private Long id;        
    private OperadorBean operador;
    private ChoferBean chofer;    
    private MovilBean movil;    
    private ClienteBean cliente;    
    private DireccionClienteBean direccion;           
    private EstadoBean ultimoEstadoServicio;    
    private String tipo;        
    private String telefono;    
    private String observacion;        
    private Boolean finalizado;        
    private Date fechaRegistro;        
    private Boolean necesitaAtencion;
        
    private List<DetalleServicioBean> detallesServicio;
    private List<AsignacionServicioBean> asignaciones;    
    
    public ServicioBean(){
        detallesServicio=new ArrayList<DetalleServicioBean>();
        asignaciones=new ArrayList<AsignacionServicioBean>();
    }
       

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    public Long getId() {
        return id;
    }

    @ManyToOne(optional = true, fetch = FetchType.LAZY)
    @JoinColumn(name="operadorId")
    public OperadorBean getOperador() {
        return operador;
    }
    
    @ManyToOne(optional = true, fetch = FetchType.LAZY)
    @JoinColumn(name="choferId")
    public ChoferBean getChofer() {
        return chofer;
    }

    @ManyToOne(optional = true, fetch = FetchType.LAZY)
    @JoinColumn(name="movilId")
    public MovilBean getMovil() {
        return movil;
    }
    
    
    @ManyToOne(optional = true, fetch = FetchType.LAZY)
    @JoinColumn(name="clienteId")
    public ClienteBean getCliente() {
        return cliente;
    }

    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    @JoinColumn(name="direccionId")
    public DireccionClienteBean getDireccion() {
        return direccion;
    }

    @OneToOne(fetch = FetchType.EAGER, optional = true)
    public EstadoBean getUltimoEstadoServicio() {
        return ultimoEstadoServicio;
    }

    @Column(name="tipo",length = 1,nullable = false)
    public String getTipo() {
        return tipo;
    }

    @Column(name = "telefono", nullable = true, length = 15)
    public String getTelefono() {
        return telefono;
    }

    @Column(name="observacion",length = 400, nullable = true)
    public String getObservacion() {
        return observacion;
    }

    @Column(name="finalizado",nullable = false)
    public Boolean getFinalizado() {
        return finalizado;
    }

    @Column(name = "fechaRegistro", nullable = false)
    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    public Date getFechaRegistro() {
        return fechaRegistro;
    }

    @Column(name="necesitaAtencion",nullable = false)
    public Boolean getNecesitaAtencion() {
        return necesitaAtencion;
    }
    
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "servicio")
    public List<DetalleServicioBean> getDetallesServicio() {
        return detallesServicio;
    }
    
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "servicio")
    public List<AsignacionServicioBean> getAsignaciones() {
        return asignaciones;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public void setChofer(ChoferBean chofer) {
        this.chofer = chofer;
    }

    public void setMovil(MovilBean movil) {
        this.movil = movil;
    }

    public void setCliente(ClienteBean cliente) {
        this.cliente = cliente;
    }

    public void setDireccion(DireccionClienteBean direccion) {
        this.direccion = direccion;
    }

    public void setUltimoEstadoServicio(EstadoBean estadoServicio) {
        this.ultimoEstadoServicio = estadoServicio;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public void setObservacion(String observacion) {
        this.observacion = observacion;
    }

    public void setFinalizado(Boolean finalizado) {
        this.finalizado = finalizado;
    }

    public void setFechaRegistro(Date fechaRegistro) {
        this.fechaRegistro = fechaRegistro;
    }

    public void setNecesitaAtencion(Boolean necesitaAtencion) {
        this.necesitaAtencion = necesitaAtencion;
    }    

    public void setDetallesServicio(List<DetalleServicioBean> detallesServicio) {
        this.detallesServicio = detallesServicio;
    }    

    public void setOperador(OperadorBean operador) {
        this.operador = operador;
    }   

    public void setAsignaciones(List<AsignacionServicioBean> asignaciones) {
        this.asignaciones = asignaciones;
    }
    
    
    
    
    
    
    
}
